New prototypes. New functions.
authorMarius Vollmer <mvo@src.gnome.org>
Sun, 7 Jun 1998 12:00:55 +0000 (12:00 +0000)
committerMarius Vollmer <mvo@src.gnome.org>
Sun, 7 Jun 1998 12:00:55 +0000 (12:00 +0000)
* gdk/gdk.h (gdk_color_copy, gdk_color_free): New prototypes.
* gdk/gdk.c (gdk_color_copy, gdk_color_free): New functions.

gdk/gdk.h
gdk/gdkcolor.c
gdk/x11/gdkcolor-x11.c

index 1d487e466d678ee9e491340a72975216310d71e6..72ff69822b465445df47c88640d49e7e880e7349 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -456,6 +456,10 @@ void gdk_colormap_change (GdkColormap      *colormap,
 void gdk_colors_store   (GdkColormap   *colormap,
                          GdkColor      *colors,
                          gint           ncolors);
+
+GdkColor *gdk_color_copy (GdkColor *color);
+void      gdk_color_free (GdkColor *color);
+
 gint gdk_colors_alloc   (GdkColormap   *colormap,
                          gint           contiguous,
                          gulong        *planes,
index f55869b719295e6eddbb1ac40d54ca5167d3daf5..03c79327c42c7156890774909a490ad1f8006b74 100644 (file)
@@ -365,6 +365,62 @@ gdk_colors_free (GdkColormap *colormap,
               pixels, npixels, planes);
 }
 
+/*
+ *--------------------------------------------------------------
+ * gdk_color_copy
+ *
+ *   Copy a color structure into new storage.
+ *
+ * Arguments:
+ *   "color" is the color struct to copy.
+ *
+ * Results:
+ *   A new color structure.  Free it with gdk_color_free.
+ *
+ *--------------------------------------------------------------
+ */
+
+static GMemChunk *color_chunk;
+
+GdkColor*
+gdk_color_copy (GdkColor *color)
+{
+  GdkColor *new_color;
+  
+  g_return_val_if_fail (color != NULL, NULL);
+
+  if (color_chunk == NULL)
+    color_chunk = g_mem_chunk_new ("colors",
+                                  sizeof (GdkColor),
+                                  4096,
+                                  G_ALLOC_AND_FREE);
+
+  new_color = g_chunk_new (GdkColor, color_chunk);
+  *new_color = *color;
+  return new_color;
+}
+
+/*
+ *--------------------------------------------------------------
+ * gdk_color_free
+ *
+ *   Free a color structure obtained from gdk_color_copy.  Do not use
+ *   with other color structures.
+ *
+ * Arguments:
+ *   "color" is the color struct to free.
+ *
+ *-------------------------------------------------------------- */
+
+void
+gdk_color_free (GdkColor *color)
+{
+  g_assert (color_chunk != NULL);
+  g_return_if_fail (color != NULL);
+
+  g_mem_chunk_free (color_chunk, color);
+}
+
 gint
 gdk_color_white (GdkColormap *colormap,
                 GdkColor    *color)
index f55869b719295e6eddbb1ac40d54ca5167d3daf5..03c79327c42c7156890774909a490ad1f8006b74 100644 (file)
@@ -365,6 +365,62 @@ gdk_colors_free (GdkColormap *colormap,
               pixels, npixels, planes);
 }
 
+/*
+ *--------------------------------------------------------------
+ * gdk_color_copy
+ *
+ *   Copy a color structure into new storage.
+ *
+ * Arguments:
+ *   "color" is the color struct to copy.
+ *
+ * Results:
+ *   A new color structure.  Free it with gdk_color_free.
+ *
+ *--------------------------------------------------------------
+ */
+
+static GMemChunk *color_chunk;
+
+GdkColor*
+gdk_color_copy (GdkColor *color)
+{
+  GdkColor *new_color;
+  
+  g_return_val_if_fail (color != NULL, NULL);
+
+  if (color_chunk == NULL)
+    color_chunk = g_mem_chunk_new ("colors",
+                                  sizeof (GdkColor),
+                                  4096,
+                                  G_ALLOC_AND_FREE);
+
+  new_color = g_chunk_new (GdkColor, color_chunk);
+  *new_color = *color;
+  return new_color;
+}
+
+/*
+ *--------------------------------------------------------------
+ * gdk_color_free
+ *
+ *   Free a color structure obtained from gdk_color_copy.  Do not use
+ *   with other color structures.
+ *
+ * Arguments:
+ *   "color" is the color struct to free.
+ *
+ *-------------------------------------------------------------- */
+
+void
+gdk_color_free (GdkColor *color)
+{
+  g_assert (color_chunk != NULL);
+  g_return_if_fail (color != NULL);
+
+  g_mem_chunk_free (color_chunk, color);
+}
+
 gint
 gdk_color_white (GdkColormap *colormap,
                 GdkColor    *color)